C has been the de facto systems programming language for 44 years, which means an awful lot of useful software is written in that language. As excellent as Rust is, it doesn't have that inertia behind it. (Yet!) Rust has good FFI support for calling C functions, plus tools for automatically generating FFI bindings, which make much of that existing software usable for new Rust projects. Still, gaining Rust's full safety advantages requires rewriting existing C software in Rust, which is currently a manual, time-consuming, and error-prone process.
Corrode is a tool that aims to bridge this gap by automatically translating C source code to equivalent Rust. A Corrode-translated program is no safer than the original C was, but it gets the most tedious translation work out of the way so a programmer can focus on taking advantage of Rust's more advanced features.
In this talk we'll explore what Corrode does, and does not, do. We'll discuss interesting examples that will surprise most C programmers, while staying accessible to programmers in any language. We'll look at how Corrode has been tested: the most effective ways are methods not widely used with other software. And we'll evaluate Corrode's documentation and community-building efforts, to both show how you can contribute and suggest steps you might consider for your own projects.
Speaker Jamey Sharp is Corrode's initial author and a programmer experienced in a variety of languages including C, Java, Python, Haskell, and x86 assembly. He is new to Rust, compared to those languages, and Corrode grew out of his learning experiments. (The exercise has been very effective at finding odd corners of both C and Rust...) He recently completed a session as a Recurse Center resident, teaching advanced topics to diverse audiences of programming enthusiasts spanning every skill level, which he enjoyed tremendously.